// 引入模块
const { Sequelize } = require('sequelize');
const fs = require('fs');

// 初始化一个实例
let db = new Sequelize('db2', 'root', 'root', {
    host: 'localhost',
    dialect: 'mysql'
});

// 扫描所有的模型定义文件

function findModel() {
    let path = './model';

    let files = fs.readdirSync(path);

    return files.filter(item => {
        return item.endsWith('.js') && item !== 'index.js';
    });
}

let obj = {};

function defineModel(files) {
    files.forEach(item => {//item类似于：Car.js
        let tmpModule = require('./' + item);//加载模块得到一个对象
        let uperFileName = item.replace('.js', '');//Car
        let lowFileName = uperFileName.toLowerCase();// 最终结果是形如：car
        // 定义模型

        obj[uperFileName] = db.define(lowFileName, tmpModule, {
            charset: 'utf8'
        });
    })
}

// 执行定义好的方法，分别扫描所有的模型定义文件，批量定义模型
let files = findModel();
defineModel(files);



// （使用上一步定义好的模型）同步到数据库，创建数据表

// db.sync({force:true});// 同步所有定义好的模型到数据库

// Car.sync();//同步指定的模型到数据库

obj.sync = async function (force) {
    if (force) {
        return db.sync({ force: true });
    }
    return db.sync();
}

module.exports = obj;